# 参数声明
# 使用构建参数 IMAGE_TAG（可用于多版本管理）
ARG IMAGE_TAG=latest

# 第一阶段：构建阶段（编译前端代码）
FROM node:20-bookworm-slim AS builder

# 设置工作目录（对应前端代码路径）
WORKDIR /app

# 复制 package.json 和 lock 文件，利用 Docker 缓存加速
COPY front/jsrj/package*.json ./

# 安装依赖（如果用 yarn，替换为 yarn install）
RUN npm install --registry=https://registry.npmmirror.com  # 可选：指定国内镜像加速

# 复制完整前端代码（注意上下文路径，从项目根目录开始）
COPY front/jsrj/ ./

# 编译生产环境代码（Vite 构建命令，根据实际脚本调整）
RUN npm run build:prod


# 第二阶段：运行阶段（使用轻量 Web 服务器托管静态文件）
FROM nginx:alpine3.22-slim

# 移除默认 nginx 配置
RUN rm -rf /etc/nginx/conf.d/*

# 复制自定义 nginx 配置（可根据需要调整，放在 deployment 目录下的 nginx.conf 示例）
COPY deployment/nginx-frontend.conf /etc/nginx/conf.d/default.conf

# 从构建阶段复制编译后的静态文件到 nginx 静态目录
COPY --from=builder /app/dist /usr/share/nginx/html

# 暴露 HTTP 端口（与 nginx 配置一致，通常为 80）
EXPOSE 80

# 容器启动时启动 nginx
CMD ["nginx", "-g", "daemon off;"]